/**
 * 用户配置相关API
 * 用于获取和更新用户的工作配置信息
 */

import request from "@/utils/request";

// API配置常量
const API_CONFIG = {
  // 用户配置相关
  userConfig: "/system/user-config/get",
  userConfigUpdate: "/system/user-config/update",
};

/**
 * 获取用户配置信息
 * @param {number} Id - 用户ID
 * @returns {Promise<Object>} 用户配置信息
 */
export function getUserConfig(id) {
  // 检查用户是否已登录
  const token = uni.getStorageSync("ACCESS_TOKEN");
  if (!token) {
    console.warn("用户未登录，无法获取用户配置");
    return Promise.reject(new Error("用户未登录"));
  }

  return request({
    url: API_CONFIG.userConfig + "?id=" + id,
    method: "get",
  });
}

/**
 * 更新用户配置信息
 * @param {Object} data - 配置数据
 * @returns {Promise<Object>} 更新结果
 */
export function updateUserConfig(data) {
  return request({
    url: API_CONFIG.userConfigUpdate,
    method: "PUT",
    data,
  });
}
//page 查询用户信息page
// 查询用户配置分页
export function getUserConfigPage(params) {
  return request({
    method: "get",
    url: "/system/user-config/page",
    params: params,
  });
}

/**
 * 获取用户完整信息（包含配置）
 * @param {number} userId - 用户ID
 * @returns {Promise<Object>} 完整用户信息
 */
export async function getUserFullConfig(userId) {
  try {
    // 检查用户是否已登录
    const token = uni.getStorageSync("ACCESS_TOKEN");
    if (!token) {
      console.warn("用户未登录，无法获取用户配置");
      return {
        success: false,
        message: "用户未登录",
      };
    }

    const configRes = await getUserConfig(userId);

    if (configRes.code === 0 && configRes.data) {
      return {
        success: true,
        data: configRes.data,
      };
    } else {
      return {
        success: false,
        message: configRes.msg || "获取用户配置失败",
      };
    }
  } catch (error) {
    console.error("获取用户配置失败:", error);
    // 如果是未登录错误，返回更友好的提示
    if (error.message === "用户未登录") {
      return {
        success: false,
        message: "请先登录后再获取用户配置",
      };
    }
    return {
      success: false,
      message: error.message || "网络错误",
    };
  }
}

export default {
  getUserConfig,
  updateUserConfig,
  getUserFullConfig,
};
